import axios from 'axios'

// 统计相关API服务
const statisticsService = {
  /**
   * 获取统计数据
   * @param {Object} params - 请求参数
   * @param {string} [params.start_time] - 开始时间
   * @param {string} [params.end_time] - 结束时间
   * @param {string} [params.time_range] - 预设时间范围 (today, week, month)
   * @param {string} [params.camera_id] - 摄像头ID
   * @returns {Promise} - 请求响应
   */
  getStatistics: async (params = {}) => {
    try {
      // 确保params是对象
      const validParams = typeof params === 'object' ? params : {}
      
      // 根据是否有start_time和end_time确定使用哪个接口
      let endpoint = '/api/statistics/data'
      const requestParams = { ...validParams }
      
      // 如果没有指定时间范围，默认使用今天
      if (!requestParams.start_time && !requestParams.end_time && !requestParams.time_range) {
        requestParams.time_range = 'today'
      }
      
      const response = await axios.get(endpoint, { params: requestParams })
      return response
    } catch (error) {
      console.error('获取统计数据失败:', error)
      throw error
    }
  },

  /**
   * 导出统计数据到CSV
   * @param {Object} params - 请求参数
   * @param {string} [params.start_time] - 开始时间
   * @param {string} [params.end_time] - 结束时间
   * @param {string} [params.time_range] - 预设时间范围
   * @param {string} [params.camera_id] - 摄像头ID
   * @param {Object} options - 请求选项
   * @returns {Promise} - 请求响应
   */
  exportData: async (params = {}, options = {}) => {
    try {
      const validParams = typeof params === 'object' ? params : {}
      const response = await axios.get('/api/statistics/export', {
        params: validParams,
        responseType: 'blob',
        ...options
      })
      return response
    } catch (error) {
      console.error('导出统计数据失败:', error)
      throw error
    }
  },

  /**
   * 获取实时监控数据
   * @param {string} [cameraId] - 摄像头ID
   * @returns {Promise} - 请求响应
   */
  getRealtimeData: async (cameraId = null) => {
    try {
      const params = cameraId ? { camera_id: cameraId } : {}
      const response = await axios.get('/api/statistics/realtime', { params })
      return response
    } catch (error) {
      console.error('获取实时监控数据失败:', error)
      throw error
    }
  }
}

export default statisticsService